package q223_computeArea;

public class Solution {
    /*
    矩形面积
    基本思想，两个矩形覆盖的总面积是两个矩形面积的和减去重叠面积
    步骤：
    1 算出两个矩形的总面积以及重叠面积
    2 重叠部分的左下角x和y坐标分别为两个矩形的左下角坐标分别的最大值
    3 重叠部分的右上角x和y坐标分别为两个矩形的右上角坐标分别的最小值
    4 如果重叠部分的左下角的x和y坐标中有一个大于等于右上角的x和y坐标，则重叠部分面积为0
     */
    public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        int area1 = (ax2 - ax1) * (ay2 - ay1);
        int area2 = (bx2 - bx1) * (by2 - by1);
        int x1 = Math.max(ax1, bx1);
        int y1 = Math.max(ay1, by1);
        int x2 = Math.min(ax2, bx2);
        int y2 = Math.min(ay2, by2);
        int flapArea = (x2 - x1) * (y2 - y1);
        if (x1 >= x2 || y1 >= y2) {
            return area1 + area2;
        }
        return area1 + area2 - flapArea;
    }
}
